// routes/tasks.js
const express = require('express');
const jwt = require('jsonwebtoken');
const { Task } = require('../models');  // 引入 Sequelize 模型
const router = express.Router();

// 中间件：验证 JWT
router.use((req, res, next) => {
  const token = req.headers['authorization']?.split(' ')[1];  // 获取 Authorization 头中的 token

  if (!token) {
    return res.status(403).json({ error: 'No token provided' });  // 如果没有 token，则返回 403 错误
  }

  jwt.verify(token, process.env.JWT_SECRET, (err, decoded) => {
    if (err) {
      return res.status(403).json({ error: 'Invalid token' });  // 如果 token 无效，则返回 403 错误
    }

    req.user = decoded;  // 将解码后的用户信息附加到请求对象中
    next();  // 继续处理请求
  });
});

// 获取所有待办事项
router.get('/tasks', async (req, res) => {
  try {
    const tasks = await Task.findAll();  // 获取待办事项列表
    res.json(tasks);  // 返回 JSON 格式的待办事项数据
  } catch (error) {
    console.error(error);
    res.status(500).json({ error: 'Error fetching tasks' });
  }
});

// 创建新待办事项
// 创建新待办事项
// 创建新待办事项
router.post('/tasks', async (req, res) => {
  const { content, priority, dueDate } = req.body;

  if (!content) {
    return res.status(400).json({ error: 'Task name is required' });
  }

  // 验证日期格式
  let validDueDate = null;
  if (dueDate) {
    validDueDate = new Date(dueDate);
    if (isNaN(validDueDate)) {
      return res.status(400).json({ error: 'Invalid dueDate format' });
    }
  }

  try {
    // 创建新的待办事项
    const task = await Task.create({
      content,  // 这里对应前端的 todoItem
      priority, // 这里对应前端的 priority
      dueDate: validDueDate || null, // 如果日期无效，设置为 null
      isCompleted: false, // 默认未完成
    });
    res.status(201).json(task);  // 返回创建的任务
  } catch (error) {
    console.error(error);
    res.status(500).json({ error: 'Error creating task' });
  }
});


// 更新待办事项（完成操作）
// 更新待办事项（完成操作）
router.put('/tasks/:id', async (req, res) => {
  const { id } = req.params;
  const { isCompleted } = req.body;

  try {
    const task = await Task.findByPk(id);
    if (!task) {
      return res.status(404).json({ error: 'Task not found' });
    }

    task.isCompleted = isCompleted;  // 更新任务状态
    await task.save();
    res.status(200).json(task);  // 返回更新后的任务
  } catch (error) {
    console.error(error);
    res.status(500).json({ error: 'Error updating task' });
  }
});

// 删除待办事项
router.delete('/tasks/:id', async (req, res) => {
  const { id } = req.params;
  try {
    const task = await Task.findByPk(id);
    if (!task) {
      return res.status(404).json({ error: 'Task not found' });  // 如果没有找到任务，则返回 404 错误
    }

    await task.destroy();  // 删除任务
    res.status(200).json({ message: 'Task deleted' });  // 删除成功，返回无内容响应
  } catch (error) {
    console.error(error);
    res.status(500).json({ error: 'Error deleting task' });
  }
});

module.exports = router;
